home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / sendmail_expn.nasl < prev    next >
Text File  |  2005-01-14  |  4KB  |  136 lines

  1. #
  2. # This script was written by Renaud Deraison <deraison@cvs.nessus.org>
  3. #
  4. # See the Nessus Scripts License for details
  5. #
  6.  
  7. if(description)
  8. {
  9.  script_id(10249);
  10.  script_version ("$Revision: 1.30 $");
  11.  script_cve_id("CAN-1999-0531");
  12.  
  13.  name["english"] = "EXPN and VRFY commands";
  14.  name["francais"] = "Commandes EXPN et VRFY";
  15.  script_name(english:name["english"],
  16.           francais:name["francais"]);
  17.  
  18.  desc["english"] = "
  19. The remote SMTP server answers to the EXPN and/or VRFY commands.
  20.  
  21. The EXPN command can be used to find the delivery address of mail aliases, or 
  22. even the full name of the recipients, and the VRFY command may be used to check the validity of an account.
  23.  
  24.  
  25. Your mailer should not allow remote users to use any of these commands, 
  26. because it gives them too much information.
  27.  
  28.  
  29. Solution : if you are using Sendmail, add the option :
  30.  
  31.     O PrivacyOptions=goaway
  32.  
  33.        in /etc/sendmail.cf.
  34.  
  35. Risk factor : Low"; 
  36.     
  37.  
  38.  desc["francais"] = "Le serveur SMTP distant
  39. rΘpond aux requΦtes EXPN et/ou VRFY.
  40.  
  41. La commande EXPN peut Ωtre utilisΘe pour 
  42. trouver l'adresse de livraison des
  43. aliases mail, et mΩme parfois le
  44. vrai nom du propriΘtaire d'un login.
  45. La commande VRFY quant α elle,
  46. peut etre utilisΘe pour vΘrifier
  47. l'existence d'un accompte.
  48.  
  49. Votre mailer ne devrait pas
  50. laisser les utilisateurs 
  51. faire ces commandes, car
  52. elles leur donne trop d'informations.
  53.  
  54. Solution : si vous utilisez sendmail,
  55. ajoutez l'option :
  56.  
  57.     O PrivacyOptions=goaway
  58.     
  59. dans /etc/sendmail.cf.
  60.  
  61. Facteur de risque : Faible";
  62.  
  63.  script_description(english:desc["english"],
  64.               francais:desc["francais"]);
  65.             
  66.  
  67.  summary["english"] = "EXPN and VRFY checks"; 
  68.  summary["francais"] = "VΘrification de EXPN et VRFY";
  69.  script_summary(english:summary["english"],
  70.           francais:summary["francais"]);
  71.  
  72.  script_category(ACT_GATHER_INFO);
  73.  
  74.  script_copyright(english:"This script is Copyright (C) 1999 Renaud Deraison",
  75.            francais:"Ce script est Copyright (C) 1999 Renaud Deraison");
  76.  
  77.  family["english"] = "SMTP problems";
  78.  family["francais"] = "ProblΦmes SMTP";
  79.  script_family(english:family["english"], francais:family["francais"]);
  80.  script_dependencie("find_service.nes","smtpserver_detect.nasl");
  81.  script_require_ports("Services/smtp", 25);
  82.  script_exclude_keys("SMTP/wrapped");
  83.  exit(0);
  84. }
  85.  
  86. #
  87. # The script code starts here
  88. #
  89.  
  90. include("smtp_func.inc");
  91.  
  92. port = 25;
  93. if(!get_port_state(port))exit(0);
  94.  
  95. if(get_kb_item("SMTP/wrapped"))exit(0);
  96.  
  97.  soc = open_sock_tcp(port);
  98.  if(soc)
  99.  {
  100.   b = smtp_recv_banner(socket:soc);
  101.   s = string("HELO example.com\r\n");
  102.   send(socket:soc, data:s);
  103.   r = recv_line(socket:soc, length:1024);
  104.  
  105.   s = string("EXPN root\r\n");
  106.   send(socket:soc, data:s);
  107.   r = recv_line(socket:soc, length:1024);
  108.   
  109.   
  110.   if(ereg(string:r, pattern:"^(250|550) .*$"))
  111.   {
  112. # exim hack
  113.     if(!ereg(string:r, pattern:"^550 EXPN not available.*$") &&
  114.        !ereg(string:r, pattern:"^550.*Administrative prohibition.*$") &&
  115.        !ereg(string:r, pattern:"^550.*Access denied.*$"))
  116.     {
  117.       security_warning(port);
  118.       set_kb_item(name:"SMTP/expn",value:TRUE);
  119.     } 
  120.   } 
  121.   else {
  122.     s = string("VRFY root\r\n");
  123.     send(socket:soc, data:s);
  124.     r = recv_line(socket:soc, length:1024);
  125.     if(ereg(string:r, pattern:"^(250|550) .*$"))
  126.            {
  127.             send(socket:soc, data:string("VRFY random", rand(), "\r\n"));
  128.         r = recv_line(socket:soc, length:4096);
  129.         if(ereg(string:r, pattern:"^(250|550) .*$"))exit(0);
  130.         security_warning(port);
  131.         set_kb_item(name:"SMTP/vrfy",value:TRUE);
  132.         }
  133.        }
  134.    close(soc);
  135. }
  136.